package com.vhall.component.controller.goods.facade;

import com.vhall.component.entity.goods.goods.*;
import com.vhall.component.entity.goods.vo.GetGoodsInfoResponseVO;
import com.vhall.component.entity.goods.vo.GuoxinPrdApiBindReqVO;
import com.vhall.component.entity.page.vo.PageVO;
import com.vhall.component.plugin.common.annotation.VssTokenAuth;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;

/**
 * web端商品相关接口
 *
 * @author guoxin.wang
 * @date 2021/10/26 11:25
 */
@FeignClient(value = "LiveGoodsFacade", path = "/v4/live-goods")
public interface LiveGoodsFacade {

    /**
     * 获取直播间绑定商品列表
     *
     * @param reqVO 参数
     * @return 返回值
     */
    @PostMapping("/bind-list")
    @VssTokenAuth
    GoodsPage<GoodsBindListRspVO> getBindList(@Validated GoodsBindListReqVO reqVO);

    @VssTokenAuth
    @PostMapping("/guoxin/bind-list")
    PageVO<GetGoodsInfoResponseVO> getGuoxinPrdBindList(@Validated GuoxinPrdApiBindReqVO reqVO);


    /**
     * 推屏
     *
     * @param reqVO 参数
     * @return 返回值
     */
    @PostMapping("/push-screen")
    @VssTokenAuth
    Boolean pushScreen(@Validated GoodsApiSendMessageReqVO reqVO);

    /**
     * 商品推屏
     * @param reqVO
     * @return
     */
    @PostMapping("/guoxin/push-screen")
    @VssTokenAuth
    Boolean guoxinPushScreen(@Validated GoodsPushScreenReqVO reqVO);


    /**
     * 取消推屏
     *
     * @param reqVO 参数
     * @return 返回值
     */
    @PostMapping("/cancel-push-screen")
    @VssTokenAuth
    Boolean cancelPushScreen(@Validated GoodsPushScreenReqVO reqVO);


    /**
     * 设置观众端商品列表入口开关
     *
     * @param reqVO 参数
     * @return 返回值
     */
    @PostMapping("/set-goods-switch")
    @VssTokenAuth
    Boolean setGoodsSwitch(@Validated GoodsApiSetGoodsSwitchReqVO reqVO);

    /**
     * 控制台-商品详情
     *
     * @param reqVO 参数
     * @return 返回值
     */
    @PostMapping("/detail")
    @VssTokenAuth
    GoodsRspVO get(@Validated GoodsDetailReqVO reqVO);

    /**
     * 国信产品信息上报
     *
     * @param reqVO 参数
     * @return 返回值
     */
    @PostMapping("/guoxin/detail")
    @VssTokenAuth
    GetGoodsInfoResponseVO detail(@Validated GoodsDetailReqVO reqVO);

}
